#!/bin/bash

# 配置默认参数
devices="7"  # 默认使用的设备
operator="poc"              # 默认运行poc用例，即全部用例
MOTD_FILE="/etc/motd"

# 使能conda环境
source /data/miniconda3/etc/profile.d/conda.sh
conda activate gmm

# 解析命令行参数
while getopts "d:r:" opt; do
    case $opt in
        d) devices="$OPTARG"
           echo "指定使用设备: $devices"
           ;;
        r) operator="$OPTARG"
           echo "指定运行算子用例: $operator"
           ;;
    esac
done

# 记录当前日期，用于输出文件命名
DATE=$(date +%Y%m%d%H%M)

# 1. 加载环境变量
source /data/daily/ascend-toolkit/set_env.sh

# 2. 处理gmm-atk-samples文件夹
if [ -d "/data/daily/gmm-atk-samples" ]; then
    rm -rf /data/daily/gmm-atk-samples
fi
git clone https://gitee.com/yangyidiao/gmm-atk-samples.git /data/daily/gmm-atk-samples

# 3. 处理cann-ops-adv-dev文件夹
if [ -d "/data/daily/cann-ops-adv-dev" ]; then
    rm -rf /data/daily/cann-ops-adv-dev
fi
git clone https://gitee.com/ascend/cann-ops-adv-dev.git /data/daily/cann-ops-adv-dev

# 4. 构建cann-ops-adv-dev
cd /data/daily/cann-ops-adv-dev || exit
bash build.sh --disable-check-compatible -n "grouped_matmul;moe_init_routing_v2"
bash build/CANN-*aarch64.run

# 5. 创建output目录（如果不存在）
mkdir -p /data/daily/output

# 6. 处理gmm-atk-samples并生成输出
cd /data/daily/gmm-atk-samples || exit
bash run.sh -r $operator -d $devices
python3 check_precision.py > /data/daily/output/${DATE}.txt 2>&1

# 7. 检查精度结果并更新motd
if grep -q "精度未通过" "/data/daily/output/${DATE}.txt"; then
    error_details=$(sed -n '/以下文件存在精度不通过的记录：/,$p' "/data/daily/output/${DATE}.txt")
    # 使用双引号包裹变量并正确插入换行
    REMINDER="[ERROR] [$DATE] 冒烟结果：存在精度未通过。详情：
${error_details}
完整日志：/data/daily/output/${DATE}.txt"
elif [ grep -q "处理文件时出错" "/data/daily/output/${DATE}.txt" ]; then
    REMINDER="[warning] [$DATE] 冒烟结果: 用例执行失败"
else
    REMINDER="[success] [$DATE] 冒烟结果：所有用例精度全部通过"
fi

# 定义固定内容的起止标记
SEPARATOR="^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"

# 保留两个分隔符之间的内容，删除其他部分
if [ -f "${MOTD_FILE}" ]; then
    # 使用sed提取两个分隔符之间的内容（包括分隔符本身）
    # 第一个分隔符开始，第二个分隔符结束
    sed -n "/^${SEPARATOR}$/,/^${SEPARATOR}$/p" "${MOTD_FILE}" > "${MOTD_FILE}.tmp"
    
    # 检查是否成功提取到内容
    if [ -s "${MOTD_FILE}.tmp" ]; then
        mv "${MOTD_FILE}.tmp" "${MOTD_FILE}"
    else
        # 如果未找到分隔符对，保留原始文件
        echo "警告：未找到完整的分隔符对，保留原始文件内容"
        rm -f "${MOTD_FILE}.tmp"
    fi
fi

# 写入新的提醒信息和分隔线
echo -e "${REMINDER}" >> "${MOTD_FILE}"
echo "__________________________________________________" >> "${MOTD_FILE}"

echo ${REMINDER}
echo "所有任务执行完成"
exit 0
